package com.smart.community.user.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.smart.community.commons.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 访客实体类
 * 
 * @author Wu.Liang
 * @since 2024-12-21
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("sc_visitor")
public class Visitor extends BaseEntity {

    /**
	 * @author Wu.Liang
	 * @date 2025年7月29日
	 */
	private static final long serialVersionUID = -677230280336614563L;

	/**
     * 访客姓名
     */
    @TableField("visitor_name")
    private String visitorName;

    /**
     * 访客手机号
     */
    @TableField("visitor_phone")
    private String visitorPhone;

    /**
     * 访客身份证
     */
    @TableField("visitor_id_card")
    private String visitorIdCard;

    /**
     * 访问目的
     */
    @TableField("visit_purpose")
    private String visitPurpose;

    /**
     * 邀请人用户ID
     */
    @TableField("invited_by")
    private Long invitedBy;

    /**
     * 访问房户ID
     */
    @TableField("household_id")
    private Long householdId;

    /**
     * 预约时间
     */
    @TableField("appointment_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime appointmentTime;

    /**
     * 访问开始时间
     */
    @TableField("visit_start_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime visitStartTime;

    /**
     * 访问结束时间
     */
    @TableField("visit_end_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime visitEndTime;

    /**
     * 访问二维码
     */
    @TableField("qr_code")
    private String qrCode;

    /**
     * 审批状态：0-待审批，1-已通过，2-已拒绝
     */
    @TableField("approval_status")
    private Integer approvalStatus;

    /**
     * 审批人ID
     */
    @TableField("approval_by")
    private Long approvalBy;

    /**
     * 审批时间
     */
    @TableField("approval_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime approvalTime;

    /**
     * 审批意见
     */
    @TableField("approval_remark")
    private String approvalRemark;

    /**
     * 访问状态：0-未访问，1-访问中，2-已结束
     */
    @TableField("visit_status")
    private Integer visitStatus;

    /**
     * 实际到达时间
     */
    @TableField("actual_arrive_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime actualArriveTime;

    /**
     * 实际离开时间
     */
    @TableField("actual_leave_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime actualLeaveTime;
} 